Relación de Dependencia extend del Diagrama de Casos de Uso
La relación <<extend>>, es una dependencia que indica que un caso de uso (extendido) añade comportamiento opcional a otro caso de uso (base) bajo ciertas condiciones. A diferencia de <<include>>, esta relación no es obligatoria y se activa solo cuando se cumplen criterios específicos, definidos en puntos de extensión (Booch et al., 2006, capítulos 17 y 18; OMG, 2017, sección 18).
La relación <<extend>> permite modelar funcionalidades opcionales o condicionales en sistemas complejos. Al combinar puntos de extensión documentados y especificaciones textuales claras, se logra un equilibrio entre flexibilidad y mantenibilidad. Su uso adecuado evita la sobrecarga de casos base y facilita la adaptación a requisitos cambiantes.
Propósito
| Propósito | Explicación |
|---|---|
| Modularidad | Separar funcionalidades opcionales o condicionales del flujo principal. |
| Flexibilidad | Permitir que el caso base funcione independientemente de la extensión. |
| Claridad | Evitar sobrecargar el caso base con variantes poco frecuentes. |
Notación
Se representa mediante una línea punteada con una flecha abierta, etiquetada con <<extend>>, desde el caso extendido al caso base.
Los puntos de extensión se documentan en la especificación textual del caso base.
Ejemplo
Figura
Ejemplo de Relación de Dependencia <<extend>>
Nota:
- Caso de Uso Base:
(Realizar Compra) - Caso de Uso Extendido:
(Aplicar Descuento) - El caso de uso
(Aplicar Descuento)es ejecutado de manera condicional por(Realizar Compra)en puntos específicos de su secuencia llamado punto de extensión.
Reglas y Buenas Prácticas
| Regla | Ejemplo Correcto | Ejemplo Incorrecto |
|---|---|---|
| Usar para funcionalidades opcionales | <<extend>> para aplicar descuentos |
<<extend>> para validar usuario (debe ser <<include>>) |
| Documentar puntos de extensión | Especificar en qué paso del flujo base se activa la extensión. | Dejar la condición implícita. |
| Evitar ciclos | <<include>> con etiquetas claras |
<<incl>> (abreviación ambigua) |